﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MySqlProvider.Enums
{
    /// <summary>
    /// Use MySql Connection String Booleans as Flags
    /// </summary>
    [Flags]
    public enum MySqlFlags
    {
        /// <summary>
        /// if only None selected, all boolean settings will be set to false. Not recomended.
        /// </summary>
        None = 0,
        /// <summary>
        /// When true, multiple SQL statements can be sent with one command execution.
        /// </summary>
        AllowBatching = 1 << 0,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        AllowUserVariables = 1 << 1,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        AllowZeroDateTime = 1 << 2,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        AutoEnlist = 1 << 3,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        CacheServerProperties = 1 << 4,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        CheckParameters = 1 << 5,
        /// <summary>
        /// When true, indicates the connection state is reset when removed from the pool.
        /// </summary>
        ConnectionReset = 1 << 6,
        /// <summary>
        /// True to return DateTime.MinValue for date or datetime columns that have illegal values.
        /// </summary>
        ConvertZeroDateTime = 1 << 7,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        DefaultCommandTimeout = 1 << 8,
        /// <summary>
        /// If you want to use server-side prepare statements, set this option to false.
        /// </summary>
        IgnorePrepare = 1 << 9,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        IntegratedSecurity = 1 << 10,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        InteractiveSession = 1 << 11,
        /// <summary>
        /// When true, various pieces of information is output to any configured TraceListeners.
        /// </summary>
        Logging = 1 << 12,
        /// <summary>
        /// True to treat data type BINARY(16) as GUIDs, otherwise CHAR(36).
        /// </summary>
        OldGuids = 1 << 13,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        PersistSecurityInfo = 1 << 14,
        /// <summary>
        /// When true, the MySqlConnection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool.
        /// </summary>
        Pooling = 1 << 15,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        Replication = 1 << 16,
        /// <summary>
        /// Setting this option to false means that Connector/NET will ignore a column's binary flags as set by the server.
        /// </summary>
        RespectBinaryFlags = 1 << 17,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        SqlServerMode = 1 << 18,
        /// <summary>
        /// no documentation provided.
        /// </summary>
        TableCaching = 1 << 19,
        /// <summary>
        /// Should binary blobs be treated as UTF8.
        /// </summary>
        TreatBlobsAsUTF8 = 1 << 20,
        /// <summary>
        /// Setting this value to false indicates that TINYINT(1) will be treated as an INT.
        /// </summary>
        TreatTinyAsBoolean = 1 << 21,
        /// <summary>
        /// When true the connection will report changed rows instead of found rows.
        /// </summary>
        UseAffectedRows = 1 << 22,
        /// <summary>
        /// Setting this option to true enables compression of packets exchanged between the client and the server.
        /// </summary>
        UseCompression = 1 << 23,
        /// <summary>
        /// Indicates that performance counters should be updated during execution.
        /// </summary>
        UsePerformanceMonitor = 1 << 24,
        /// <summary>
        /// Logs inefficient database operations.
        /// </summary>
        UseUsageAdvisor = 1 << 25
    }
}
